#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
#include <unistd.h>

// 宏定义，我叫他宏替换。
// 主要用于我们多次用到同一个固定的值，可以用宏替换来做。
// 这里ARRAR_MAX_SIZE就是(10)

// 这里定义了int数组，可以保存10个int变量。arrayInt是数组名(备注：arrayInt不是变量，arrayInt是个指针常量).
// 可以通过arrayInt[0]来访问第0个元素（c语言不是1开始，从0开始）。可以通过arrayInt[1]来访问第1个元素。通过arrayInt[2]来访问第2个元素。类推。
// 因为ARRAR_MAX_SIZE为(10),所以下面语句展开后就是：int arrayInt[(10)];
//  这里展开是int arrayInt[(10)];而不是int arrayInt[10]。虽然语句效果一致，但有不同含义。
/*
当然数组还可以有：下面的数组类型不一样。
char array[ARRAR_MAX_SIZE];
short array[ARRAR_MAX_SIZE];
float array[ARRAR_MAX_SIZE];
*/

// 初始化函数，这里没有参数，用void，或省略void。
//如果不需要返回值，那么用void代替。return;返回即可。
#define CHECK_ARR2_ROWS 5
#define CHECK_ARR2_COLS 10

// 因为函数addFunction定义在调用函数main之前，因此不用声明也可以
//  int addFunction(int a, int b);
int main(int argc, char **argv)
{
    int arr2[CHECK_ARR2_ROWS][CHECK_ARR2_COLS];
    for (int i = 0/*c99*/; i < CHECK_ARR2_ROWS; i++)
    {
        for(int j = 0; j < CHECK_ARR2_COLS; j++)
        {
            arr2[i][j] = i * CHECK_ARR2_COLS + j;
        }
    }

    printf("[%s,%d]printf array : \n", __FILE__, __LINE__);
    for (int i = 0/*c99*/; i < CHECK_ARR2_ROWS; i++)
    {
        for(int j = 0; j < CHECK_ARR2_COLS; j++)
        {
            printf("%4d ", arr2[i][j]);
        }
        printf("\n");
    }


    int tmpSum = 0;
    for (int i = 0/*c99*/; i < CHECK_ARR2_ROWS; i++)
    {
        for(int j = 0; j < CHECK_ARR2_COLS; j++)
        {
            tmpSum += arr2[i][j];
        }
    }
    printf("[%s,%d]sum value=%d\n", __FILE__, __LINE__, tmpSum);
    return 1;
}
